	
	.SECTION	SEGA_P,CODE,ALIGN=4
;/*@*/
;/***********************************************************************
;*																		*
;*	【synopsis】														*
;*																		*
;*		#include	"per_x.h"											*
;*																		*
;*		trigger = PER_DisguiseTrigger( assignment, trigger );			*
;*																		*
;*		トリガ情報<trigger> をアサインテーブル<assignment> に従って		*
;*		変換します。<assignment> に NULL を指定すると、なんの変換も		*
;*		せずに <trigger> をそのまま返します。							*
;*																		*
;*		アサインテーブルとはトリガ情報の配列で、配列のインデックスが	*
;*		トリガ情報のビット番号に対応するテーブルのことです。			*
;*		例えば <trigger> の 0 ビット目と 4 ビット目が TRUE だった場		*
;*		合の戻り値は ( assignment[0] | assignment[4] ) になります。		*
;*																		*
;*		普通は assignment[] の各メンバには、ただ１つのトリガを対応さ	*
;*		せます。１つのメンバに複数のトリガを対応させた場合には、１つ	*
;*		のトリガが押されただけで、複数のトリガが押されたかのように振	*
;*		る舞うので注意が必要です。										*
;*																		*
;*																		*
;*	【parameters】														*
;*																		*
;*		const assignment_t	*assignment;								*
;*		trigger_t		trigger;										*
;*																		*
;*		<assignment> は、トリガ情報のアサインテーブル					*
;*		<trigger> は、トリガ情報										*
;*																		*
;*		<assignment> に NULL を渡すと何の変換もせずに <trigger> を		*
;*		そのまま返します。												*
;*																		*
;*																		*
;*	【return value】													*
;*																		*
;*		trigger_t	trigger;											*
;*																		*
;*		トリガ情報を返します。											*
;*																		*
;*																		*
;*	【influence/reference objects】										*
;*																		*
;*		なし															*
;*																		*
;*																		*
;***********************************************************************/
	.GLOBAL	_PER_DisguiseTrigger
_PER_DisguiseTrigger:
	tst		r4,r4
	bt/s	L02
	mov		r5,r0
	
	bra		L01
	mov		#0,r0
L00:
	mov.w	@r4+,r2
	bf/s	L01
	extu.w	r2,r2
	or		r2,r0
L01:
	tst		r5,r5
	bf/s	L00
	shlr	r5
	
L02:
	rts
	nop

	.END
